package database;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import humanos.Administrativo;
import humanos.Paciente;
import humanos.Persona;
import humanos.ProfSalud;

public class HumanosBD {

	/**Inserta a una nueva persona dentro de la base de datos*/
	public static boolean NuevaPersona(Persona LaPersona){
		
		try {
			Connection conex = Conexion.getConexion(false);
			PreparedStatement prep = conex.prepareStatement("INSERT INTO personas values (?,?,?,?);");
			
			prep.setString(1, LaPersona.getRUT());
			prep.setString(2, LaPersona.getNombres());
			prep.setString(3, LaPersona.getApellidoPaterno());
			prep.setString(4, LaPersona.getApellidoMaterno());
			
			
			prep.executeUpdate();
			return true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog(null, e, "Error en la Base de datos", JOptionPane.ERROR_MESSAGE);
			return false;
		}
	}
	
	public static boolean NuevoAdminstrativo(Administrativo ElAdmin){
		
		try {
			
			//Insertar primeramente en tabla de personas
			NuevaPersona(ElAdmin);
			
			//Insertar en tabla de administrativos
			Connection conex = Conexion.getConexion(false);
			PreparedStatement prep = conex.prepareStatement("INSERT INTO administrativos values (?,?,?);");
			
			
			prep.setString(1, ElAdmin.getRUT());
			prep.setString(2, ElAdmin.getCargo());
			prep.setString(3, ElAdmin.getPassword());
			
			prep.executeUpdate();
			return true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog(null, e, "Error en la Base de datos", JOptionPane.ERROR_MESSAGE);
			return false;
		}
	}
	
	public static boolean NuevoProfSalud(ProfSalud ElProf){
		
		try {
			
			//Insertar primeramente en tabla de personas
			NuevaPersona(ElProf);
			
			//Insertar en tabla de administrativos
			Connection conex = Conexion.getConexion(false);
			PreparedStatement prep = conex.prepareStatement("INSERT INTO profesionalsalud values (?,?);");
			
			
			prep.setString(1, ElProf.getRUT());
			prep.setString(2, ElProf.getEspecialidad());
			
			prep.executeUpdate();
			return true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog(null, e, "Error en la Base de datos", JOptionPane.ERROR_MESSAGE);
			return false;
		}
	}
	
public static boolean NuevoPaciente(Paciente ElPaciente){
		
		try {
			
			//Insertar primeramente en tabla de personas
			NuevaPersona(ElPaciente);
			
			//Insertar en tabla de administrativos
			Connection conex = Conexion.getConexion(false);
			PreparedStatement prep = conex.prepareStatement("INSERT INTO pacientes values (?,?,?,?);");
			java.sql.Date dat = new java.sql.Date(ElPaciente.getFechaNacimiento().getTime());
			
			prep.setString(1, ElPaciente.getRUT());
			prep.setString(2, ElPaciente.getDireccion());
			prep.setString(3, ElPaciente.getTelefono());
			prep.setDate(4, dat);
			
			prep.executeUpdate();
			return true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog(null, e, "Error en la Base de datos", JOptionPane.ERROR_MESSAGE);
			return false;
		}
	}
	
	
}
